Exempel på parallella tillstånd i diagramuttryck
Här följer några goda exempel på hur QlikView-utvecklare och avancerade användare kan använda anpassade tillstånd. Exemplen finns i filen: ‘Alternate States Functionality.qvw’
Synkronisera urval mellan tillstånd
Följande uttryck kan användas i ett enda diagram:
- count({$} DISTINCT [Invoice Number])
- count({State1} DISTINCT [Invoice Number])
- count({State2} DISTINCT [Invoice Number])
Det finns en nackdel med denna metod: QlikView-utvecklaren måste dubblera urvalen (listboxar och multiboxar) för alla tre tillstånden så att slutanvändaren kan göra lämpliga val för de olika tillstånden. I många fall vill nog QlikView-utvecklaren ha en uppsättning "gemensamma" val som är tillgängliga för alla tillstånd. Det gör att slutanvändaren kan ange ett sammanhang för de olika diagrammen och sedan använda sig av specifika val för att visa skillnader mellan tillstånd. Set-analys kan användas tillsammans med tillstånd för att hålla vissa urval konsekventa mellan tillstånd.
- count({State1<Year = $::Year, Month = $::Month>} DISTINCT [Invoice Number])
- count({State2<Year = $::Year, Month = $::Month>} DISTINCT [Invoice Number])
QlikView-utvecklaren kommer att hålla urvalen Year och Month i State1 och State2 synkroniserade med urvalen Year och Month i standardtillståndet. QlikView-utvecklaren kan lägga till element i set-modifierarna vid behöv för att ännu fler fält ska hållas konsekventa mellan tillstånd.
Set-operatorer
Det går att använda set-operatorer (+, *, -, /) tillsammans med tillstånd. Följande uttryck är giltiga och räknar antal distinkta fakturanummer som antingen finns i standardtillståndet eller State1.
Exempel:
- count({$ + State1} DISTINCT [Invoice Number])
räknar de distinkta fakturanumren i unionen <default>-tillståndet och State1.
- count({1 - State1} DISTINCT [Invoice Number])
räknar de distinkta fakturanumren som inte finns i State1.
- count({State1 * State2} DISTINCT [Invoice Number])
räknar de distinkta fakturanumren som finns i både <default>-tillståndet och State1.
Implicita fältvärdesdefinitioner
Ett annat sätt att använda set-operatorer är tillsammans med elementfunktionerna P() och E(). Dessa funktioner är endast tillgängliga tillsammans med set-uttryck.
Exempel:
- count({$<[Invoice Number] = p({State1} [Invoice Number])>} DISTINCT [Invoice Number])
Uttrycket räknar de distinkta fakturanumren i <default>-tillståndet baserat på de möjliga fakturanummer som är tillgängliga i State1.
Det fyller nästan, dock inte exakt, samma funktion som följande uttryck:
- count({$<[Invoice Number] = State1::[Invoice Number]>} DISTINCT [Invoice Number])
Skillnaden mellan de två uttrycken är följande: Det första uttrycket innebär att de möjliga värdena för invoice number i State1 hamnar i standardtillståndet. I det andra uttrycket skickas de valda värdena från State1 till standardtillståndet. Om användaren inte har valt några fakturanummer i State1 kommer inga fakturanummer att skickas till standardtillståndet.
Set-operatorer används bäst inom set-modifierare. Följande uttryck hittar snittet mellan de möjliga fakturanumren från State1 och State2 och skickar dessa värden till fakturanumren i standardtillståndet.
Exempel:
- count({$<[Invoice Number] = p({State1} [Invoice Number]) * p({State2} [Invoice Number])>} DISTINCT [Invoice Number])
Uttrycket för att hitta snittet mellan fakturanumren i <default>-tillståndet och State1 är:
- count({$<[Invoice Number] = p({$} [Invoice Number]) * p({State1} [Invoice Number])>} DISTINCT [Invoice Number])
Uttrycket kan verka förvirrande eftersom ett tillstånd (i detta fall <standardtillståndet>) både i elementfunktionen och en set-identifierare. Tänk på att elementfunktionen p($) returnerar möjliga värden i standardtillståndet. Set- eller tillståndsidentifieraren {$} modifieras av resultatet från elementfunktionerna. Fakturaval som för närvarande finns i standardtillståndet skrivs över av värdena från snittet för elementfunktionerna.
Observera att uttrycket ovan fortfarande inte är helt korrekt eftersom det inte lyckas synkronisera de gemensamma valen mellan standardtillståndet och State1. Nedan följer ett exempel som gör detta:
Exempel:
- count({$<[Invoice Number] = p({$} [Invoice Number]) * p({State1<Year = $::Year, Month = $::Month>} [Invoice Number])>} DISTINCT [Invoice Number])
Liksom tidigare kan QlikView-utvecklaren lägga till fält i modifieraren för att hålla urval konsekventa mellan olika tillstånd.